package com.example.api.config;

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * OpenAPI配置类
 * 自定义API文档的信息和配置
 * 
 * @author example
 * @since 1.0.0
 */
@Configuration
public class OpenApiConfig {

    /**
     * 配置OpenAPI信息
     * 
     * @return OpenAPI对象
     */
    @Bean  // 声明这是一个Spring Bean，用于配置OpenAPI文档
    public OpenAPI customOpenAPI() {  // 自定义OpenAPI配置方法
        return new OpenAPI()  // 创建新的OpenAPI实例
                .info(new Info()  // 设置API基本信息对象
                        .title("用户管理API")  // 设置API文档标题
                        .description("提供用户相关的REST API接口，包括创建、查询、更新和删除用户等操作")  // 设置API详细描述
                        .version("1.0.0")  // 设置API版本号
                        .contact(new Contact()  // 创建联系人信息对象
                                .name("Example Team")  // 设置团队/联系人名称
                                .email("example@example.com")  // 设置联系邮箱
                                .url("https://www.example.com"))  // 设置联系网址
                        .license(new License()  // 创建许可证信息对象
                                .name("Apache 2.0")  // 设置许可证名称
                                .url("https://www.apache.org/licenses/LICENSE-2.0.html")))  // 设置许可证URL
                .components(new Components()  // 创建组件对象，用于配置全局组件
                        .addSecuritySchemes("bearer-key",  // 添加安全方案，名称为"bearer-key"
                                new SecurityScheme()  // 创建安全方案对象
                                        .type(SecurityScheme.Type.HTTP)  // 设置安全方案类型为HTTP
                                        .scheme("bearer")  // 设置认证方案为bearer
                                        .bearerFormat("JWT")));  // 设置令牌格式为JWT
    }
} 